package com.wenx.v3system.modular.cloud.domain.po;

import com.baomidou.mybatisplus.annotation.TableName;
import com.wenx.base.domain.BaseDeptEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 系统权限实体
 * 
 * <p>支持Enhanced RBAC + ABAC Elements混合权限模型</p>
 * <p>兼容前端PermissionGuard的所有权限验证场景</p>
 * 
 * @author wenx
 * @since 1.0.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_permission")
public class SysPermission extends BaseDeptEntity {

    /**
     * 权限代码，如 'user:read', 'role:update'
     */
    private String code;

    /**
     * 权限名称，如 '查看用户', '编辑角色'
     */
    private String name;

    /**
     * 权限描述
     */
    private String description;

    /**
     * 权限分类，如 'user', 'role', 'system', 'department', 'team'
     */
    private String category;

    /**
     * 资源类型，如 'user', 'menu', 'api', 'file'
     */
    private String resource;

    /**
     * 操作类型，如 'read', 'write', 'delete', 'update'
     */
    private String action;

    /**
     * 权限作用域：global, department, team, owner, custom
     */
    private String scope;

    /**
     * 权限类型：menu-菜单权限, button-按钮权限, api-接口权限
     */
    private String type;

    /**
     * 父权限ID（支持权限树结构）
     */
    private Long parentId;

    /**
     * 权限路径（如菜单路径）
     */
    private String path;

    /**
     * HTTP方法（如果是API权限）
     */
    private String method;

    /**
     * 权限图标
     */
    private String icon;

    /**
     * 组件路径（如果是菜单权限）
     */
    private String component;

    /**
     * 重定向路径
     */
    private String redirect;

    /**
     * 是否隐藏
     */
    private Boolean hidden;

    /**
     * 是否总是显示
     */
    private Boolean alwaysShow;

    /**
     * 是否为内置权限
     */
    private Boolean isBuiltin;

    /**
     * 权限优先级
     */
    private Integer priority;

    /**
     * 权限状态：1-启用，0-禁用
     */
    private Integer status;

    /**
     * 排序字段
     */
    private Long sort;
} 